home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-04
/
dm3_src.zip
/
RANDOM.ASM
< prev
Wrap
Assembly Source File
|
1988-04-29
|
3KB
|
94 lines
;* ************************************************************************* *;
;* *;
;* Clock Based Random Numbers *;
;* *;
;* ************************************************************************* *;
;* ************************************************************************* *;
;* Update History *;
;* ************************************************************************* *;
;* Date Author Description *;
;* ---------- ---------- --------------------------------------------- *;
;* 06/02/86 M. Bayley New functions *;
;* *;
;* *;
;* *;
;* ************************************************************************* *;
TITLE RND_CLOCK - Clock based random number generator
;
;
;************************
; HARDWARE EQUATES
;************************
;
TIMER_PORT EQU 40H ; TIMER 0 DATA
TIMER_CONTROL EQU 43H ; CONTROL PORT
;
TMR_BINARY EQU 00000000B ; BINARY COUNTING
TMR_BCD EQU 00000001B ; BCD COUNTING
TMR_MODE0 EQU 00000000B ; MODE 0
TMR_MODE1 EQU 00000010B ; MODE 1
TMR_MODE2 EQU 00000100B ; MODE 2
TMR_MODE3 EQU 00000110B ; MODE 3
TMR_MODE4 EQU 00001000B ; MODE 4
TMR_MODE5 EQU 00001010B ; MODE 5
TMR_LATCH EQU 00000000B ; LATCH COMMAND
TMR_LOADL EQU 00010000B ; LOAD LOW
TMR_LOADH EQU 00100000B ; LOAD HIGH
TMR_LOADLH EQU 00110000B ; LOAD LOW THEN HIGH
TMR_COUNTER0 EQU 00000000B ; COUNTER NUMBER 1
TMR_COUNTER1 EQU 01000000B ; COUNTER NUMBER 2
TMR_COUNTER2 EQU 10000000B ; COUNTER NUMBER 3
;
TMR_DATAN EQU TMR_BINARY+TMR_MODE3+TMR_LOADLH+TMR_COUNTER0
TMR_DATAC EQU TMR_BINARY+TMR_MODE2+TMR_LOADLH+TMR_COUNTER0
TMR_READ EQU TMR_BINARY+TMR_MODE2+TMR_LATCH+TMR_COUNTER0
;
;
;
;
; Segment Definitions
;
TRANxx_TEXT SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS: TRANxx_TEXT
;
;
;************************
; _RND_CLOCK
;************************
; PROCEDURE: 1. READ CLOCK VALUE
; 2. EXIT
; ENTRY: NONE
; RETURN: AX CONTAINS RANDOME NUMBER
;
PUBLIC _rnd_clock
_rnd_clock PROC FAR
;
CLI ; DON'T BUG ME
MOV AL,TMR_READ ; SET FOR READ
OUT TIMER_CONTROL,AL
IN AL,TIMER_PORT ; READ LOW BYTE
MOV AH,AL
IN AL,TIMER_PORT ; READ HIGH BYTE
STI
RET
;
_rnd_clock ENDP
;
;
TRANxx_TEXT ENDS
;
END